package entity

import (
	"time"

	"github.com/google/uuid"
	"gorm.io/gorm"
)

// SystemPrompt 全局系统提示词配置
// 用于存储系统级的AI行为配置，供管理员统一管理
type SystemPrompt struct {
	ID        uuid.UUID `gorm:"primaryKey;type:uuid;column:id;default:uuid_generate_v4()"`
	Name      string    `gorm:"column:name;not null;size:100;uniqueIndex"` // 配置名称，如 "default", "customer_service" 等
	Content   string    `gorm:"column:content;not null;size:5000"`         // 系统提示词内容
	IsActive  bool      `gorm:"column:is_active;default:false"`            // 是否为当前激活的配置
	CreatedAt time.Time `gorm:"autoCreateTime"`
	UpdatedAt time.Time `gorm:"autoUpdateTime"`
}

// TableName specifies the table name for the SystemPrompt model.
func (SystemPrompt) TableName() string {
	return "system_prompts"
}

// BeforeCreate 在创建之前的钩子
func (sp *SystemPrompt) BeforeCreate(tx *gorm.DB) error {
	// 如果设置为激活状态，需要将其他配置设为非激活
	if sp.IsActive {
		tx.Model(&SystemPrompt{}).Where("is_active = ?", true).Update("is_active", false)
	}
	return nil
}

// BeforeUpdate 在更新之前的钩子
func (sp *SystemPrompt) BeforeUpdate(tx *gorm.DB) error {
	// 如果设置为激活状态，需要将其他配置设为非激活
	if sp.IsActive {
		tx.Model(&SystemPrompt{}).Where("is_active = ? AND id != ?", true, sp.ID).Update("is_active", false)
	}
	return nil
}

// GetDefaultSystemPrompt 获取默认的系统提示词内容
func GetDefaultSystemPrompt() string {
	return `你是一个智能AI助手，可以帮助用户解答问题、分析数据、执行任务。

你有访问以下工具的能力：
1. 时间工具 - 获取当前时间
2. PostgreSQL工具 - 查询数据库

请根据用户的需求合理使用这些工具来提供帮助。`
}
